"""
    Member公用函数库
    通过 md5 和 base64 进行加密
"""

import hashlib,base64,random,string
from application import app
import requests,json

class MemberService:

    # 用户的token
    # salt 为随机生成的加密字符串，每个用户不同
    @staticmethod
    def geneAuthCode(member_info = None):
        m = hashlib.md5() # 创建 hashlib 对象

        str = "%s-%s-%s"%(member_info.id, member_info.salt, member_info.status) # 加密规则

        m.update(str.encode("utf-8")) # 进行md5加密（注意使用utf-8）

        return m.hexdigest() # 返回十六进制加密



    # 生成user的salt
    @staticmethod
    def geneSalt(length=16):
        key_list = [ random.choice( ( string.ascii_letters + string.digits ) ) for i in range(length) ]
        return (''.join(key_list))


    # 获取openid
    @staticmethod
    def getWeChatOpenId(code):
        # 根据前端提交的code，去换openid
        url = 'https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&js_code={2}&grant_type=authorization_code'.format(app.config['MINA_APP']['appid'], app.config['MINA_APP']['appsecret'], code)

        # 发送请求
        r = requests.get(url)  # 获取GET请求返回的内容
        res = json.loads(r.text)  # 将返回的 json字符串 转为 dict

        open_id = None

        if 'openid' in res:
            open_id = res['openid']  # 得到用户的openid

        return open_id
